package com.stlm2.core.base.impl;

import com.stlm2.core.common.page.PageView;
import com.stlm2.core.base.BaseDao;

import java.util.List;
import java.util.Map;

/**
 * service层通用方法

 */
public abstract class BaseServiceImpl<T>{

	/**
	 * 获得dao
	 * 
	 * @return
	 */
	abstract protected BaseDao<T> getDao();

	/**
	 * 获得分页信息
	 * 
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public PageView getPage(int pageNo, int pageSize, T t) {
		// List<T> list = getDao().query(pageView, params);
		// pageView.setRecords(list);
		// return pageView;

		return getDao().queryPageView(pageNo, pageSize, t);
	}
	public PageView getpage2(int pageNo, int pageSize, String selectId ,Map<String,Object> map){

		return  getDao().queryPageView(pageNo, pageSize, selectId,map);
	}
	public PageView getPage3(int pageNo, int pageSize, T t) {
		// List<T> list = getDao().query(pageView, params);
		// pageView.setRecords(list);
		// return pageView;

		return getDao().queryPageView2(pageNo, pageSize, t);
	}
	public PageView getPage4(int pageNo, int pageSize, T t) {
		// List<T> list = getDao().query(pageView, params);
		// pageView.setRecords(list);
		// return pageView;

		return getDao().queryPageView4(pageNo, pageSize, t);
	}


	/**
	 * 获得list数据
	 * 
	 * @param first
	 * @param max
	 * @param t
	 * @return
	 */
	public List<T> getList(int first, int max, T t) {
		// return getDao().query(pageView, params);

		return getDao().queryList(first, max, t);
	}
	public List<T> getList1(int first, int max, String selectId ,T t) {
		// return getDao().query(pageView, params);

		return getDao().queryList1(first, max,selectId, t);
	}

	public List<Map<String,Object>> getList2(int first, int max, T t) {
		// return getDao().query(pageView, params);

		return getDao().queryList2(first, max, t);
	}
    /*
    * 增加一个查询的方法，这个方法传入的参数可以是map类型来满足传入的是要给dto
    * */
	public List<T> getList3(int first, int max, Map<String,Object> map) {
		// return getDao().query(pageView, params);

		return getDao().queryList3(first, max,  map);
	}

	/**
	 * 添加数据
	 * 
	 * @param t
	 */
	public void addEntity(T t) {
		if (t == null)
			return;

		getDao().add(t);
	}

	/**
	 * 根据ID删除数据
	 * 
	 * @param id
	 */
	public void deleteEntityById(Integer id) {
		if (id == null)
			return;

		getDao().delete(id);
	}

	/**
	 * 更新数据
	 * 
	 * @param t
	 */
	public void updateEntity(T t) {
		if (t == null)
			return;

		getDao().modify(t);
	}

	/**
	 * 根据ID获得数据
	 * 
	 * @param id
	 */
	public T findEntityById(Integer id) {
		if (id == null)
			return null;

		return getDao().getById(id);
	}

	/**
 	* 根据GOODS_ORDER_ID 获得数据
	*/
	/*public List<T> findEntityByGOI(Long goodsorderid){
		if(goodsorderid == null)
			return  null;
		return  getDao().getByGoodsOrderId(goodsorderid);
	}*/
	/**
	 * 获得所有数据
	 * 
	 */
	public List<T> getAll() {
		return getDao().queryAll();
	}
}
